package org.stvd.service.admin;

import java.util.List;
import java.util.Map;

import org.stvd.common.utils.ServiceResult;
import org.stvd.entities.admin.Guids;
import org.stvd.service.base.BaseService;

/**
 * 系统平台Service接口类
 * @author houzx
 */
public interface GuidsService extends BaseService<Guids>{
    
    /**
     * 根据条件获取GUID列表
     * @param innerCode 平台内部编码
     * @param status 平台状态{T：启用；F：禁用}
     * @return
     */
    public List<Guids> listAllGuids(String innerCode, String status) ;

    /**
     * 获取当前平台所有的子平台列表
     * @param guid 平台ID
     * @return
     */
    public List<Guids> listAllChildGuids(String guid);
    
    /**
     * 根据GUID获取直接下级平台列表
     * @param guid GUID
     * @return
     */
    public List<Guids> listGuidsByUpperGuid(String guid);
    
    /**
     * 根据用户ID获取平台列表
     * @param userId 用户ID
     * @return
     */
    public List<Guids> listGuidByUserId(String userId);
    
    /**
     * 判断是否是子平台
     * @param guid 当前GUID
     * @param upperGuid 上级GUID
     * @return
     */
    public boolean isChildGuids(String guid, String upperGuid);

    /**
     * 根据上级ID获取内部编码
     * @param upperGuid 上级GUID
     * @return
     */
    public String getInnerCode(String upperGuid);
    
    /**
     * 根据guid获取平台编码
     * @param guid 平台ID
     * @return
     */
    public String getPlatformCode(String guid);

    /**
     * 插入平台信息并初始化权限以下信息：
     * 1、机构信息
     * 2、角色信息
     * 3、资源信息
     * 3、用户机构、用户角色、角色资源映射信息
     * @param guids GUID
     */
    public ServiceResult<Map<String, Object>> insertGuidsAndInit(Guids guids);

}